package com.guet;

import java.util.List;
import java.util.Map;

public class MGraph {
    public Map<Integer, vexsinfo> vexs; // 定义一个Map来存储节点信息，key为节点的ID，value为节点的详细信息
    public int arcs[][] = new int[1000][1000]; // 定义一个二维数组来表示邻接矩阵，用于存储节点之间的距离
    public int vexNum = 0; // 用于存储节点的数量
    public int arcsNum = 0; // 用于存储边的数量

    // 构造方法，用于初始化图的结构
    public MGraph() {
        vexs = new fileUse().getAllVex(); // 从文件中读取所有节点信息，并存储到vexs Map中
        List<String> list = new fileUse().getAllEdge(); // 从文件中读取所有边信息，并存储到list列表中
        vexNum = vexs.size(); // 获取节点的数量
        arcsNum = list.size(); // 获取边的数量

        // 遍历所有的边信息，初始化邻接矩阵
        for (String s : list) {
            String mess[] = s.split(" "); // 按空格分割边信息，得到起点、终点和距离
            if (mess[0].equals("")) continue; // 如果起点为空，则跳过该条边信息

            int start = Integer.parseInt(mess[0]); // 获取起点ID
            int end = Integer.parseInt(mess[1]); // 获取终点ID
            int distance = Integer.parseInt(mess[2]); // 获取边的距离

            // 在邻接矩阵中设置边的距离
            arcs[start][end] = distance;
            arcs[end][start] = distance; // 因为是无向图，所以起点到终点的距离等于终点到起点的距离
        }
    }
}
